<?php

class Usuario_model extends Base_model
{
	const TABLA = "usuario";
	
	var $id;
	var $tipo;
	var $nombres;
	var $apellidos;
	var $documento;
	var $email;
	var $pais_fk;
	var $departamento_fk;
	var $barrio;
	var $direccion;
	var $celular;
	var $coordenadas;
	var $password;
	var $activo;
	
	function __construct()
	{
		parent::__construct();
	}
	
	/** Inserta un registro */
	function insert()
	{
		$this->db->insert(Usuario_model::TABLA, $this->to_array());
		return $this->db->getInsertId();
	}
	
	/** Actualiza el registro */
	function update($id)
	{
		$this->db->where('id', $id);
		$this->db->update(Usuario_model::TABLA, $this->to_array());
	}
	
	/** Elimina el registro de la BD */ 
	function delete($id)
	{
		$this->db->where('id', $id);
		$this->db->delete(Usuario_model::TABLA);
	}
	
	/** Retorna el objeto correspondiente con el identificador */
	function get($id)
	{
		$this->db->where('id', $id);		
		$results = $this->db->get(Usuario_model::TABLA);		
		return $results[0];
	}
	
	/** Retorna el objeto correspondiente con el nombre */
	function getByNombre($nombre)
	{
		$this->db->where('nombres', $nombre); // en la base nombre es nombres
		$results = $this->db->get(Usuario_model::TABLA);
		return sizeof($results) > 0 ? $results[0] : false;
	}
	
	/** Retorna el objeto correspondiente con el email */
	function getByEmail($email)
	{
		$this->db->where('email',$email);
		$results = $this->db->get(Usuario_model::TABLA);
		return sizeof($results) > 0 ? $results[0] : false;
	}
	
	/** Retorna el objeto correspondiente con el email */
	function getByEmailYPassword($email, $password)
	{
		$this->db->where('email', $email);
		$this->db->where('password', $password);
		
		$results = $this->db->get(Usuario_model::TABLA);
		return sizeof($results) > 0 ? $results[0] : false;
	}
	
	/** Retorna todos los objetos */
	function getAll()
	{
		return $this->db->get(Usuario_model::TABLA);		
	}	
	
	/** Retorna todos los tenicos */
	function getTecnicos()
	{
		$this->db->where('tipo', TIPO_USUARIO_TECNICO);		
		return $this->db->get(Usuario_model::TABLA);
	}
	
	/** Retorna todos los clientes */
	function getClientes()
	{
		$this->db->where('tipo', TIPO_USUARIO_CLIENTE);
		return $this->db->get(Usuario_model::TABLA);
	}
	
	function setUsuarioActivo($id, $activo)
	{	
		$this->db->where('id', $id);
		$this->db->update(Usuario_model::TABLA, array("activo" => $activo));
	}
	
}